﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Uricao.LogicaDeNegocios.Fabricas;
using Uricao.LogicaDeNegocios.Comandos;
using Uricao.Entidades.EEntidad;
using Uricao.Entidades.FabricasEntidad;
using Uricao.Entidades.ERolesUsuarios;
using Uricao.Entidades.ETratamientos;
using Uricao.Entidades.EHistoriaPaciente;

namespace Uricao.PruebasUnitarias.PHistoriaClinica
{
    [TestFixture]
    public class PruebaComandoHistoriaClinica
    {

        [Test]
        public void PruebaComandoActivarDesactivarHistoriaClinica()
        {
            int _idHistoria = 1;
            String _estado = "activo";

            Comando<bool> _comando = FabricaComando.CrearComandoActivarDesactivarHistoriaClinica(_idHistoria,_estado);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoActivarDesactivarSecuencia()
        {
            int _Secuencia= 1;
            String _estado = "activo";

            Comando<bool> _comando = FabricaComando.CrearComandoActivarDesactivarSecuencia(_Secuencia, _estado);

            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoAgregarAntecedente()
        {
            int _idHistoriaClinica = 1;
            List<String> _respuestas = new List<String>();
            Comando<bool> _comando;

            _respuestas.Add("si");
            _respuestas.Add("si");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("si");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("no");
            _respuestas.Add("ninguno");
            _respuestas.Add("ninguno");
            _respuestas.Add("ninguno");

            _comando = FabricaComando.CrearComandoAgregarAntecedente(_respuestas, _idHistoriaClinica);

            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoAgregarHistoriaClinica()
        {

            Entidad _historiaClinica = FabricaEntidad.NuevaHistoria();
            Entidad _paciente = FabricaEntidad.NuevoCliente();
            (_paciente as Cliente).IdUsuario = 16;
            (_historiaClinica as HistoriaClinica).FechaIngreso = Convert.ToDateTime("10/08/2013");
            (_historiaClinica as HistoriaClinica).Paciente = (_paciente as Cliente);
            (_historiaClinica as HistoriaClinica).Observacion = "Prueba comando agregar historia clinica";
            (_historiaClinica as HistoriaClinica).Estado="inactivo";
            Comando<bool> _comando;

            _comando = FabricaComando.CrearComandoAgregarHistoriaClinica(_historiaClinica);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());

        }


        [Test]
        public void PruebaComandoAgregarSecuencia()
        {
            int _idSecuencia = 1;
            List<Entidad> _secuencias = new List<Entidad>();
            Entidad _secuencia = FabricaEntidad.NuevoDetalleSecuencia();
            Entidad _medico = FabricaEntidad.NuevaUsuario();
            Entidad _tratamiento = FabricaEntidad.NuevoTratamiento();

            (_medico as Usuario).IdUsuario = 3;
            (_tratamiento as Tratamiento).Id = 1;
            (_secuencia as DetalleSecuencia).IdSecuencia = 1;
            (_secuencia as DetalleSecuencia).Observacion = "Prueba comando";
            (_secuencia as DetalleSecuencia).Tratamiento = (_tratamiento as Tratamiento);
            (_secuencia as DetalleSecuencia).IdHistoriaBase = 1;
            (_secuencia as DetalleSecuencia).Odontologo = (_medico as Usuario);
            (_secuencia as DetalleSecuencia).Fecha = Convert.ToDateTime("11/09/2013");
            (_secuencia as DetalleSecuencia).Pieza = "22";
            (_secuencia as DetalleSecuencia).Diagnostico = "Tramo";
            (_secuencia as DetalleSecuencia).Estado = "inactivo";
            _secuencias.Add(_secuencia);

            Comando<bool> _comando = FabricaComando.CrearComandoAgregarSecuencia(_secuencias, _idSecuencia);

            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoBuscarUltimaHistoria()
        {
            Comando<int> _comando = FabricaComando.CrearComandoBuscarUltimaHistoria();
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar() > 0);
        }

        [Test]
        public void PruebaComandoConsultarAntecedente()
        {
            int idHistoria = 1;
            Comando<List<Entidad>> _comando = FabricaComando.crearComandoConsultarAntecedente(idHistoria);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar().Count > 0);
        }

        [Test]
        public void PruebaComandoConsultarHistoriaClinica()
        {
            String _nombre = "";
            String _apellido = "";
            String _cedula = "";
            int _fkIdHistoria = 1;

            Comando<List<Entidad>> _comando = FabricaComando.CrearComandoConsultarHistoriaClinica(_nombre, _apellido, _cedula, _fkIdHistoria);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar().Count > 0);
        }

        [Test]
        public void PruebaComandoConsultarSecuencia()
        {
            int _fkIdHistoria = 1;

            Comando<List<Entidad>> _comando = FabricaComando.CrearComandoConsultarSecuencia(_fkIdHistoria);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar().Count > 0);
        }

        [Test]
        public void PruebaComandoConsultarSecuenciaXid()
        {
            int _idSecuencia= 1;

            Comando<Entidad> _comando = FabricaComando.CrearComandoConsultarSecuenciaXid(_idSecuencia);
            Assert.IsNotNull(_comando);
            Assert.IsNotNull(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoConsultarTodasHistoriaClinica()
        {
            Comando<List<Entidad>> _comando = FabricaComando.CrearComandoConsultarTodasHistoriaClinica();
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar().Count > 0);
        }

        [Test]
        public void PruebaComandoModificarAntecedente()
        {
            List<Entidad> _antecedente = new List<Entidad>();
            Entidad _resp1 = FabricaEntidad.NuevoAntecedente();
            Entidad _resp2 = FabricaEntidad.NuevoAntecedente();
            Entidad _resp3 = FabricaEntidad.NuevoAntecedente();

            (_resp1 as Antecedente).IdAntecedente = 1;
            (_resp1 as Antecedente).Respuesta = "otra";
            (_resp2 as Antecedente).IdAntecedente = 2;
            (_resp2 as Antecedente).Respuesta = "Prueba comando";
            (_resp3 as Antecedente).IdAntecedente = 3;
            (_resp3 as Antecedente).Respuesta = "Prueba comando 2";

            _antecedente.Add(_resp1);
            _antecedente.Add(_resp2);
            _antecedente.Add(_resp3);

            Comando<bool> _comando = FabricaComando.CrearComandoModificarAntecedente(_antecedente);

            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());

        }

        
        [Test]
        public void PruebaComandoModificarHIstoriaClinica()
        {
            Entidad _historia = FabricaEntidad.NuevaHistoria();

            (_historia as HistoriaClinica).NumeroHistoria = 1;
            (_historia as HistoriaClinica).FechaIngreso = Convert.ToDateTime("20/01/2013");
            (_historia as HistoriaClinica).Estado = "activo";
            (_historia as HistoriaClinica).Observacion = "Prueba comando";

            Comando<bool> _comando = FabricaComando.CrearComandoModificarHistoriaClinica(_historia);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }

        [Test]
        public void PruebaComandoModificarSecuencia()
        {
            List<Entidad> _secuencias = new List<Entidad>();
            Entidad _secuencia = FabricaEntidad.NuevoDetalleSecuencia();
            Entidad _medico = FabricaEntidad.NuevaUsuario();
            Entidad _tratamiento = FabricaEntidad.NuevoTratamiento();

            (_medico as Usuario).IdUsuario = 3;
            (_tratamiento as Tratamiento).Id = 1;
            (_secuencia as DetalleSecuencia).IdSecuencia = 1;
            (_secuencia as DetalleSecuencia).Observacion = "Prueba comando";
            (_secuencia as DetalleSecuencia).Tratamiento = (_tratamiento as Tratamiento);
            (_secuencia as DetalleSecuencia).IdHistoriaBase = 1;
            (_secuencia as DetalleSecuencia).Odontologo = (_medico as Usuario);
            (_secuencia as DetalleSecuencia).Fecha = Convert.ToDateTime("10/08/2013");
            (_secuencia as DetalleSecuencia).Pieza = "19";
            (_secuencia as DetalleSecuencia).Diagnostico = "Caries";
            (_secuencia as DetalleSecuencia).Estado = "inactivo";
            _secuencias.Add(_secuencia);

            Comando<bool> _comando = FabricaComando.CrearComandoModificarSecuencia(_secuencias);
            Assert.IsNotNull(_comando);
            Assert.IsTrue(_comando.Ejecutar());
        }



    }
}